/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package srtaller;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;

/**
 *
 * @author Cristobal
 */
public class Usuarios {
    
    Conectate con;

    public Usuarios() {
        
    con = new Conectate();
    
    }
    
    
    
     public void NuevoUsuario(String nombre, String apellido, String clave, String rol){
       try {            
            PreparedStatement pstm = con.getConnection().prepareStatement("insert into " + 
                    "usuarios(nombre,apellido,clave,rol) " +
                    " values(?,?,?,?)");            
            pstm.setString(1, nombre);
            pstm.setString(2, apellido);
            pstm.setString(3, clave);
            pstm.setString(4, rol);                                               
            pstm.execute();
            pstm.close();            
         }catch(SQLException e){
         System.out.println(e);
      }
   }   
    
    //obtenemos todos los datos de la tabla
 public Object [][] getDatos(){
      int registros = 0;
      //obtenemos la cantidad de registros existentes en la tabla
      try{         
         PreparedStatement pstm = con.getConnection().prepareStatement("SELECT count(1) as total FROM usuarios ");
         ResultSet res = pstm.executeQuery();
         res.next();
         registros = res.getInt("total");
         res.close();
      }catch(SQLException e){
         System.out.println(e);
      } 
   
       Object[][] data = new String[registros][5];  
    //realizamos la consulta sql y llenamos los datos en "Object"
      try{    
         PreparedStatement pstm = con.getConnection().prepareStatement("SELECT " +
            " iduser,nombre,apellido,clave,rol" +
            " FROM usuarios" +
            " ORDER BY iduser ");
         ResultSet res = pstm.executeQuery();
         int i = 0;
         while(res.next()){
            String estCodigo = res.getString("iduser");
            String estNombre = res.getString("nombre");
            String estpaterno = res.getString("apellido");
            String estclave = res.getString("clave");
            String estmaterno = res.getString("rol");
           
            data[i][0] = estCodigo;
            data[i][1] = estNombre;
            data[i][2] = estpaterno;
            data[i][3] = estclave;
            data[i][4] = estmaterno;            
            i++;
         }
         res.close();
          }catch(SQLException e){
         System.out.println(e);
    }
    return data;
 }
 
 public Object[] getUser(String iduser, String clave) {
       
        Object[] datos= null;
        try {
            PreparedStatement query = con.getConnection().prepareStatement("SELECT rol FROM usuarios WHERE iduser=? AND clave=?");
            query.setString(1, iduser);
            
            query.setString(2, clave);
            
            ResultSet res = query.executeQuery();

            
            ResultSetMetaData resmd = res.getMetaData();
           
            int totalColumnas = resmd.getColumnCount();
            
            if (res.next()) {
                datos = new Object[totalColumnas];
                for (int i = 0; i < totalColumnas; i++) {
                    datos[i] = res.getString((i+1));
                }
            } else {
                datos = null;
            }

            query.close();

        } catch (Exception e) {
            e.printStackTrace();
        }
        return datos;
    }
 
 public void deleteCliente(String cod){  
            try {                
                PreparedStatement pstm = con.getConnection().prepareStatement("delete from usuarios where iduser = ?");            
                pstm.setString(1, cod);                   
                pstm.execute();
                pstm.close();            
            }catch(SQLException e){
            System.out.println(e);
            }            
   }

 public void updateCliente(String iduser, String name, String apellido, String clave, String rol){
       try {            
            PreparedStatement pstm = con.getConnection().prepareStatement("update Clientes " +
            "set nombre = ? ,"  +
            "apellido = ? ," +
            "clave = ? ," +                   
            "where iduser = ? ");            
            pstm.setString(1, name);                   
            pstm.setString(2, apellido);
            pstm.setString(3, clave);
            pstm.setString(4,rol);
            pstm.setString(4, String.valueOf(iduser));
            pstm.execute();
            pstm.close();            
         }catch(SQLException e){
         System.out.println(e);
      }
   }
    
}
